#pragma once
#ifndef _GEOMETRY_H_
#define _GEOMETRY_H_

#include "Point.h"
#include <vector>

namespace OpenDrive {

	class Geometry
	{
	public:
		Geometry(float s,const Point &startPosition, float heading, float length);
		virtual					 ~Geometry();
		virtual void			  calPosition(float step);
		float					  getHeading() const;
		float					  getLength() const;
		Point&					  getStartPosition();
		std::vector<Point>&		  getPoints();
		float					  getS() const;

		void					  addPoint(const Point &p);
		void					  setPoints(const std::vector<Point> &p);

	private:
		Point startPosition;
		float heading;
		float length;
		float s;
		std::vector<Point> points;
	};
}

#endif // !_GEOMETRY_H_
